package com.yanxu;

/**
 * @author 折戟沉沙铁未销
 * @version V1.0
 * @date 2024/11/12-2024
 * @Description: join 的原理。 join底层还是调用wait 进行处理的。
 */
public class JoinPrinciple {
    public static void main(String[] args) throws InterruptedException {
        Thread thread1 = new Thread(new Runnable() {
            public void run() {
                System.out.println("子线程执行!!!");
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        thread1.start();
        //thread1.join();
        synchronized (thread1){
            thread1.wait();
        }

        System.out.println("主线程执行完毕!!!");


        /*
        * 上面的代码依然可以实现 join的效果。
        *   主线程中使用  synchronized (thread1){ thread1.wait();}  。
        *   以 thread1 对象为锁。然后调用 thread1.wait() 。
        *
        *   子线程的run 方法，JVM执行完毕之后，会自动调用 notify 方法。
        **/
    }
}